//导入lowdb，用法查看npm网站https://www.npmjs.com/package/lowdb/v/1.0.0
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
 //db.json是内部所用的一个文件名称
const adapter = new FileSync('db.json')
//获取db对象
const db = low(adapter)
//初始化数据,就是设置初始值，write()是写入，一调用write就把数据同步到文件中去
db.defaults({ posts: [], user: {} }).write()//该行代码无论终端执行该文件多少次，都只初始化一次，下面的写入，每执行一次会多添加一次数据
//终端执行node .\lowdb.js,同级生成了db.json文件,并且有了初始数据
//写入数据,先把数据获取到，获取完后，再调push方法加入数据,如果想写入文件，调用write就行了
db.get('posts').push({id:1,title:'今天天气不错~~'}).write()//每执行一次该行代码（node .\lowdb.js），都会添加数据，原来的数据不会被替换，而是添加
//在数组前插入数据
db.get('posts').unshift({id:2,title:'今天天气还行~~'}).write()
//获取单条数据
let result = db.get('posts').find({id:1}).value();
console.log(result);
//获取数据
console.log(db.get('posts').value());
//删除数据,remove里面需要跟上条件（是个对象）
//db.get('posts').remove({id:2}).write()//删除数据不仅有删除功能，还有返回值
let res = db.get('posts').remove({id:2}).write();//声明变量的同时，删除功能的代码也执行了，返回的内容就是被删除的内容
console.log(res)
//删除功能有点像pop,它是弹出一个元素，并且返回弹出的元素

//更新数据,首先要获取到要更新的数据，再通过assign更新,再通过write写入文件
db.get('posts').find({id:1}).assign({title:'今天下雨啦'}).write()